package com.teamone.etl.enterprise.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.teamone.etl.enterprise.entity.Enterprise;
import com.teamone.etl.enterprise.request.EnterpriseRequest;
import com.teamone.etl.enterprise.response.ApiResponse;
import com.teamone.etl.exception.CustomException;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;

/**
 (Enterprise)表服务接口

 @author makejava
 @since 2021-01-19 16:31:59 */
public interface EnterpriseService extends IService<Enterprise> {

    /**
     分页查询
     @param request 请求参数封装类
     @return 分页后结果集
     */
    PageInfo<Enterprise> getList (EnterpriseRequest request);

    /**
     修改
     @param request 请求参数封装类
     @return 受影响行数
     @throws CustomException 二次校验自定义异常
     */
    int updateWithSql (EnterpriseRequest request) throws CustomException;

    /**
     添加
     @param request 请求参数封装类
     @return 受影响行数
     @throws CustomException 二次校验自定义异常
     */
    int add (EnterpriseRequest request) throws CustomException;

    /**
     上传营业执照
     @param file 营业执照
     @throws CustomException 统一异常 文件格式错误/大小
     @return url地址
     */
    String uploadLicenseImage (MultipartFile file) throws CustomException;

    /**
     根据企业名称精确查询
     @param enterpriseName 企业名称
     @return Enterprise对象
     */
    Enterprise getByEnterpriseName (String enterpriseName);

    /**
     查询所有 - Feign
     @return List<Map>
     */
    List<Enterprise> getAll ();

    /**
     上传企业照片/头像
     @param file 企业照片/头像
     @throws CustomException 统一异常 文件格式错误/大小
     @return url地址
     */
    String uploadEnterpriseImage (MultipartFile file) throws CustomException;

    /**
     接口列表
     @return 接口列表
     @param enterpriseId 企业id
     */
    List<ApiResponse> apiList (Integer enterpriseId);

    /**
     登陆
     @param request 请求参数
     @return true/false
     @throws CustomException 统一异常 未注册/登陆失败
     */
    boolean login (EnterpriseRequest request) throws CustomException;

    /**
     修改密码
     @param request 请求参数
     @return true/false
     @throws CustomException 统一异常 修改失败
     */
    boolean changePassword (EnterpriseRequest request) throws CustomException;
}